﻿using System;
using System.Collections.Generic;

namespace DataManage
{
    public class VCMUInfo
    {
        private Int32 initSig;
        /// <summary>
        /// 激活信号
        /// </summary>
        public int InitSig { get => initSig; set => initSig = value; }
        private List<double> cellVoltageInfo;
        /// <summary>
        /// 单体电压信息集合
        /// <para>目前一个VCMU最大是64个电压采集点</para>
        /// </summary>
        public List<double> CellVoltageInfo { get => cellVoltageInfo; set => cellVoltageInfo = value; }

        private List<double> cellTempInfo;
        /// <summary>
        /// 单体温度信息集合
        /// <para>目前一个VCMU最大是64个温度采集点</para>
        /// </summary>
        public List<double> CellTempInfo { get => cellTempInfo; set => cellTempInfo = value; }
        private List<double> balancedAFEData;
        /// <summary>
        /// <para>均衡温度</para>
        /// <para>AFE温度</para>
        /// </summary>
        public List<double> BalancedAFEData { get => balancedAFEData; set => balancedAFEData = value; }
        private double batPosTemp;
        /// <summary>
        /// 极柱温度
        /// </summary>
        public double BatPosTemp { get => batPosTemp; set => batPosTemp = value; }
        private double batNegTemp;
        /// <summary>
        /// 极柱温度
        /// </summary>
        public double BatNegTemp { get => batNegTemp; set => batNegTemp = value; }
        private double powVoltage;
        /// <summary>
        /// 从板供电电压
        /// </summary>
        public double PowVoltage { get => powVoltage; set => powVoltage = value; }
        private double cellVoltageMax;
        /// <summary>
        /// 单体最大电压
        /// </summary>
        public double CellVoltageMax { get => cellVoltageMax; set => cellVoltageMax = value; }

        private int maxCellVolNo;
        /// <summary>
        /// 最高单体电压编号
        /// </summary>
        public int MaxCellVolNo { get => maxCellVolNo; set => maxCellVolNo = value; }
        private double cellVoltageMin;
        /// <summary>
        /// 单体最小电压
        /// </summary>
        public double CellVoltageMin { get => cellVoltageMin; set => cellVoltageMin = value; }
        private int minCellVolNo;
        /// <summary>
        /// 最小单体电压编号
        /// </summary>
        public int MinCellVolNo { get => minCellVolNo; set => minCellVolNo = value; }
        private double cellDetVoltage;
        /// <summary>
        /// 压差
        /// </summary>
        public double CellDetVoltage { get => cellDetVoltage; set => cellDetVoltage = value; }
        private double cellAccVoltage;
        /// <summary>
        /// 从板累加电压
        /// </summary>
        public double CellAccVoltage { get => cellAccVoltage; set => cellAccVoltage = value; }

        private double celTempMax;
        /// <summary>
        /// 单体最大温度
        /// </summary>
        public double CellTempMax { get => celTempMax; set => celTempMax = value; }
        private int maxCellTempNo;
        /// <summary>
        /// 最小单体温度编号
        /// </summary>
        public int MaxCellTempNo { get => maxCellTempNo; set => maxCellTempNo = value; }
        private double cellTempMin;
        /// <summary>
        /// 单体最小温度
        /// </summary>
        public double CellTempMin { get => cellTempMin; set => cellTempMin = value; }
        private int minCellTempNo;
        /// <summary>
        /// 最小单体温度编号
        /// </summary>
        public int MinCellTempNo { get => minCellTempNo; set => minCellTempNo = value; }
        private double cellDetTemp;
        /// <summary>
        /// 温差
        /// </summary>
        public double CellDetTemp { get => cellDetTemp; set => cellDetTemp = value; }
        private List<RelayStatus> balFlagInfo;
        /// <summary>
        /// 均衡标志数据
        /// </summary>
        public List<RelayStatus> BalFlagInfo { get => balFlagInfo; set => balFlagInfo = value; }

        private List<VCMUDIDOInfo> dIDOInfo;
        /// <summary>
        /// DIDO信息集合
        /// </summary>
        public List<VCMUDIDOInfo> DIDOInfo { get => dIDOInfo; set => dIDOInfo = value; }
        private Dictionary<string, RelayStatus> dryNodeState;
        /// <summary>
        /// 干节点状态
        /// </summary>
        public Dictionary<string, RelayStatus> DryNodeState { get => dryNodeState; set => dryNodeState = value; }

        private Dictionary<string, double> afeInfo;
        /// <summary>
        /// AFE1均衡电流
        /// <para>AFE2均衡电流</para>
        /// <para>AFE1均衡正极电压</para>
        /// <para>AFE1均衡负极电压</para>
        /// <para>AFE2均衡正极电压</para>
        /// <para>AFE2均衡负极电压</para>
        /// <para>AFE1最高单体电压</para>
        /// <para>AFE1最高单体电压编号</para>
        /// <para>AFE1最低单体电压</para>
        /// <para>AFE1最低单体电压编号</para>
        /// <para>AFE1均衡状态</para>
        /// <para>AFE2最高单体电压</para>
        /// <para>AFE2最高单体电压编号</para>
        /// <para>AFE2最低单体电压</para>
        /// <para>AFE2最低单体电压编号</para>
        /// <para>AFE2均衡状态</para>
        /// </summary>
        public Dictionary<string, double> AFEInfo { get => afeInfo; set => afeInfo = value; }
    }
}
